package Object.lambda;

/**
 * @author haomin
 * @date 2022/11/12 10:15
 **/

@FunctionalInterface
interface IMessage{
    void printMessage(String msg);

    default void printOther(){
        System.out.println("接口中的普通方法");
    }
}

class MessageImpl implements IMessage {

    @Override
    public void printMessage(String msg) {
        System.out.println(msg);
    }
}

public class LambdaTest {
    public static void main(String[] args) {
        IMessage message = new MessageImpl();
        message.printMessage("正常用法");
        // 匿名内部类
        IMessage message1 = new IMessage() {
            @Override
            public void printMessage(String msg) {
                System.out.println(msg);
            }
        };
        message1.printMessage("匿名内部类用法");

        IMessage message2 = (msg -> System.out.println(msg));
        message2.printMessage("Lambda 表达式写法");

        IMessage message3 = new MessageImpl();
        message3.printOther();

    }
}